package com.victor.common.exception;

/**
 * 所有业务异常的枚举
 */
public enum BizExceptionEnum {


    /**
     * 字典
     */
    /**
     * 字典已经存在
     */
    DICT_EXISTED(400, "字典已经存在"),
    /**
     * 创建字典失败
     */
    ERROR_CREATE_DICT(500, "创建字典失败"),
    /**
     * 包装字典属性失败
     */
    ERROR_WRAPPER_FIELD(500, "包装字典属性失败"),

    /**
     * 文件上传
     */
    /**
     * FILE_READING_ERROR!
     */
    FILE_READING_ERROR(400, "FILE_READING_ERROR!"),
    /**
     * 文件不存在!
     */
    FILE_NOT_FOUND(400, "文件不存在!"),
    /**
     * 文件不符合规范，请下载模板!
     */
    FILE_VALID(400, "文件不符合规范，请下载模板!"),
    /**
     * 文件格式必须为 .xls或.xlsx!
     */
    EXCEL_FORMAT(400, "文件格式必须为 .xls或.xlsx!"),
    /**
     * 上传图片出错
     */
    UPLOAD_ERROR(500, "上传图片出错"),

    /**
     * 权限和数据问题
     */
    /**
     * 数据库中没有该资源
     */
    DB_RESOURCE_NULL(400, "数据库中没有该资源"),
    /**
     * 权限异常
     */
    NO_PERMITION(405, "权限异常"),
    /**
     * 请求数据格式不正确
     */
    REQUEST_INVALIDATE(400, "请求数据格式不正确"),
    /**
     * 验证码不正确
     */
    INVALID_KAPTCHA(400, "验证码不正确"),
    /**
     * 不能删除超级管理员
     */
    CANT_DELETE_ADMIN(600, "不能删除超级管理员"),
    /**
     * 不能冻结超级管理员
     */
    CANT_FREEZE_ADMIN(600, "不能冻结超级管理员"),
    /**
     * 不能修改超级管理员角色
     */
    CANT_CHANGE_ADMIN(600, "不能修改超级管理员角色"),

    /**
     * 账户问题
     */
    /**
     * 该用户已经注册
     */
    USER_ALREADY_REG(401, "该用户已经注册"),
    /**
     * 没有此用户
     */
    NO_THIS_USER(400, "没有此用户"),
    /**
     * 没有此用户
     */
    USER_NOT_EXISTED(400, "没有此用户"),
    /**
     * 账号被冻结
     */
    ACCOUNT_FREEZED(401, "账号被冻结"),
    /**
     * 原密码不正确
     */
    OLD_PWD_NOT_RIGHT(402, "原密码不正确"),
    /**
     * 两次输入密码不一致
     */
    TWO_PWD_NOT_MATCH(405, "两次输入密码不一致"),

    /**
     * 错误的请求
     */
    /**
     * 计划id编号和父id不能一致
     */
    PLAN_PID_COINCIDENCE(400, "计划id编号和父id不能一致"),
    /**
     * 菜单编号和副编号不能一致
     */
    MENU_PCODE_COINCIDENCE(400, "菜单编号和副编号不能一致"),
    /**
     * 菜单编号重复，不能添加
     */
    EXISTED_THE_MENU(400, "菜单编号重复，不能添加"),

    /**
     * 观众编号重复，不能添加
     */
    EXISTED_THE_AUDIENCE(400, "编号重复，不能添加"),
    /**
     * 字典的值必须为数字
     */
    DICT_MUST_BE_NUMBER(400, "字典的值必须为数字"),
    /**
     * 请求有错误
     */
    REQUEST_NULL(400, "请求有错误"),
    /**
     * 会话超时
     */
    SESSION_TIMEOUT(400, "会话超时"),
    /**
     * 服务器异常
     */
    SERVER_ERROR(500, "服务器异常"),
    /**
     * 用户id无效
     */
    UNIONID_NOT_FOUND(400, "用户id无效"),
    /**
     * 优惠券名称已存在
     */
    TICKET_NAME_EXISTED(400, "优惠券名称已存在"),
    /**
     * 结束时间必须大于开始时间
     */
    END_NOT_LESS_THAN_START(400, "结束时间必须大于开始时间"),
    /**
     * 时间格式错误
     */
    TIME_FMT_ERROR(400, "时间格式错误"),
    /**
     * 时间至少为五分钟
     */
    TIME_FIVE_MINUTE(400, "时间至少为五分钟"),
    /**
     * 时间最多为24小时
     */
    TIME_24_HOURS(400, "时间最多为24小时"),
    /**
     * 请选择优惠券分类
     */
    TICKET_CATALOG_IS_NULL(400, "请选择优惠券分类"),
    /**
     * 保险种类已存在
     */
    INSURANCE_CATEGORY_EXISTED(400, "保险种类已存在"),
    /**
     * 服务类型已存在
     */
    SERVICE_CATEGORY_EXISTED(400, "服务类型已存在"),
    /**
     * 时间范围已存在其他活动
     */
    TIME_ERROR(400, "时间范围已存在其他活动"),
    /**
     * 预约时间已存在
     */
    MAINTENANCE_TIME_EXISTED(400, "预约时间已存在"),
    /**
     *预约人员已满
     */
    RESERVATION_IS_FULL(400,"预约人员已满"),
    /**
     *当日已预约
     */
    RESERVATION_ONLY_ONE(400,"当日已预约");

    BizExceptionEnum(int code, String message) {
        this.friendlyCode = code;
        this.friendlyMsg = message;
    }

    BizExceptionEnum(int code, String message, String urlPath) {
        this.friendlyCode = code;
        this.friendlyMsg = message;
        this.urlPath = urlPath;
    }

    /**
     * 友好提示的code码
     */
    private int friendlyCode;
    /**
     * 友好提示
     */
    private String friendlyMsg;
    /**
     * 业务异常跳转的页面
     */
    private String urlPath;

    public int getCode() {
        return friendlyCode;
    }

    public void setCode(int code) {
        this.friendlyCode = code;
    }

    public String getMessage() {
        return friendlyMsg;
    }

    public void setMessage(String message) {
        this.friendlyMsg = message;
    }

    public String getUrlPath() {
        return urlPath;
    }

    public void setUrlPath(String urlPath) {
        this.urlPath = urlPath;
    }

}
